Dihotomia limbaj de nivel inalt -  masina tinta

Intrucit un mare volum din programele destinate microcalculatoarelor este scris prin utilizarea limbajelor de nivel inalt, cel mai bun mod de imbunatatire a performantelor microcalculatoarelor consta in cresterea eficientei de executie pentru astfel de limbaje. In prezent se vorbeste despre o prapastie semantica intre modul in care limbajul de nivel inalt este vazut de catre programator si modul de implementare a acestui limbaj pe masina tinta. Cresterea eficientei de ansamblu de executie a programelor si de realizare a lor intr o forma fiabila se bazeaza, intr o mare masura, pe eforturile de realizare de punti de trecere pentru aceasta prapastie.

Pentru a gasi solutii la problema se impune mai intii o examinare amanuntita. Primul pas consta in a compara optica prin care masina este vazuta de catre programatorul in limbaj de nivel inalt si de catre cei ce folosesc limbajul de asamblare. Cele mai importante diferente sint:

a)in limbajele de nivel inalt memoria este privita drept constind dintr un set de variabile carora li s au asociat nume, set care nu reflecta relatii de tipul: vecinatatea variabilelor, pozitia lor relativa etc. Masina are memoria organizata ca o matrice liniara cu locatii de dimensiuni egale, fiecarei locatii asociindu i se o adresa.

b)limbajele de nivel inalt folosesc structuri de date multidimensionale (de exemplu matrici cu mai multi indici), in timp ce organizarea memoriei unei masini reale poate manipula structuri de date cu o singura dimensiune. 

c)in unele limbaje de nivel inalt, programarea structurata necesita o multitudine de apeluri de proceduri care implica si transfer de parametri, alocare dinamica a memoriei cerute suplimentar fata de instructiunile de salt la subrutina si revenire din subrutina, oferite de catre orice procesor.

d)limbajele de nivel inalt fac diferentierea neta intre cod si date, diferentiere inexistenta in memoria masinii reale. 

La cele mentionate se mai pot considera si alte caracteristici ale masinii care nu sint luate in considerare de limbajele de nivel inalt: registrele unitatii centrale de prelucrare sau aritmetica binara. 

